<!doctype html><html lang=zh-cn dir=ltr>
<head><meta charset=utf-8>
<meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Appveyor 也是一款线上 CICD 工具。
Support Contexts:
 Windows (Default) Ubuntu MacOS  Support Languages:
 Node.js io.js Xamarin Python Ruby C++ Go  Ruby  version: 1.0.{build}-{branch}  skip_commits:  files:  - &amp;#39;azure-pipelines.yml&amp;#39;  - &amp;#39;README.md&amp;#39;  install:  - set PATH=C:\Ruby26-x64\bin;%PATH%  - bundle install  build: off  before_test:  - ruby -v  - gem -v  - bundle -v  test_script:  - rails db:migrate RAILS_ENV=test Appveyor."><title>Appveyor</title><link rel=canonical href=https://sdttttt.github.io/blog/appveyor/>
<link rel=stylesheet href=/scss/style.min.b80bf249ce4a22cf55e8d7340a0b37a2f2c10f54f3a9a49cb94b694a2eb0bbea.css><meta property="og:title" content="Appveyor">
<meta property="og:description" content="Appveyor 也是一款线上 CICD 工具。
Support Contexts:
 Windows (Default) Ubuntu MacOS  Support Languages:
 Node.js io.js Xamarin Python Ruby C++ Go  Ruby  version: 1.0.{build}-{branch}  skip_commits:  files:  - &amp;#39;azure-pipelines.yml&amp;#39;  - &amp;#39;README.md&amp;#39;  install:  - set PATH=C:\Ruby26-x64\bin;%PATH%  - bundle install  build: off  before_test:  - ruby -v  - gem -v  - bundle -v  test_script:  - rails db:migrate RAILS_ENV=test Appveyor.">
<meta property="og:url" content="https://sdttttt.github.io/blog/appveyor/">
<meta property="og:site_name" content="SDTTTTT">
<meta property="og:type" content="article"><meta property="article:section" content="Blog"><meta property="article:tag" content="CICD"><meta property="article:modified_time" content="2020-09-24T18:06:32+08:00">
<meta name=twitter:title content="Appveyor">
<meta name=twitter:description content="Appveyor 也是一款线上 CICD 工具。
Support Contexts:
 Windows (Default) Ubuntu MacOS  Support Languages:
 Node.js io.js Xamarin Python Ruby C++ Go  Ruby  version: 1.0.{build}-{branch}  skip_commits:  files:  - &amp;#39;azure-pipelines.yml&amp;#39;  - &amp;#39;README.md&amp;#39;  install:  - set PATH=C:\Ruby26-x64\bin;%PATH%  - bundle install  build: off  before_test:  - ruby -v  - gem -v  - bundle -v  test_script:  - rails db:migrate RAILS_ENV=test Appveyor.">
</head><body class=article-page>
<script>(function(){const e="StackColorScheme";localStorage.getItem(e)||localStorage.setItem(e,"auto")})()</script><script>(function(){const t="StackColorScheme",e=localStorage.getItem(t),n=window.matchMedia("(prefers-color-scheme: dark)").matches===!0;e=="dark"||e==="auto"&&n?document.documentElement.dataset.scheme="dark":document.documentElement.dataset.scheme="light"})()</script>
<div class="container main-container flex on-phone--column compact"><aside class="sidebar left-sidebar sticky">
<button class="hamburger hamburger--spin" type=button id=toggle-menu aria-label="Toggle Menu">
<span class=hamburger-box>
<span class=hamburger-inner></span>
</span>
</button>
<header>
<figure class=site-avatar>
<a href=/>
<img src=/img/avatar_hu8e30117ca872857dd9f41f234a693048_441529_300x0_resize_box_3.png width=300 height=300 class=site-logo loading=lazy alt=Avatar>
</a>
</figure><div class=site-meta>
<h1 class=site-name><a href=/>SDTTTTT</a></h1><h2 class=site-description>臭鱼烂虾</h2></div></header><ol class=menu id=main-menu>
<div class=menu-bottom-section>
<li id=dark-mode-toggle><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-toggle-left" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="8" cy="12" r="2"/><rect x="2" y="6" width="20" height="12" rx="6"/></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-toggle-right" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="16" cy="12" r="2"/><rect x="2" y="6" width="20" height="12" rx="6"/></svg>
<span>Dark Mode</span>
</li></div></ol></aside><main class="main full-width">
<article class=main-article>
<header class=article-header>
<div class=article-details>
<div class=article-title-wrapper>
<h2 class=article-title>
<a href=/blog/appveyor/>Appveyor</a>
</h2></div><footer class=article-time>
<div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg>
<time class=article-time--reading>
9 minute read
</time>
</div></footer></div></header><section class=article-content>
<p>Appveyor 也是一款线上 CICD 工具。</p><p>Support Contexts:</p><ul>
<li>Windows (Default)</li><li>Ubuntu</li><li>MacOS</li></ul><p>Support Languages:</p><ul>
<li>Node.js</li><li>io.js</li><li>Xamarin</li><li>Python</li><li>Ruby</li><li>C++</li><li>Go</li></ul><h2 id=ruby>Ruby</h2><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-yaml data-lang=yaml><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#f92672>version</span>: <span style=color:#ae81ff>1.0</span><span style=color:#ae81ff>.{build}-{branch}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#f92672>skip_commits</span>:
</span></span><span style=display:flex><span>  <span style=color:#f92672>files</span>:
</span></span><span style=display:flex><span>    - <span style=color:#e6db74>&#39;azure-pipelines.yml&#39;</span>
</span></span><span style=display:flex><span>    - <span style=color:#e6db74>&#39;README.md&#39;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#f92672>install</span>:
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>set PATH=C:\Ruby26-x64\bin;%PATH%</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>bundle install</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#f92672>build</span>: <span style=color:#66d9ef>off</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#f92672>before_test</span>:
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>ruby -v</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>gem -v</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>bundle -v</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#f92672>test_script</span>:
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>rails db:migrate RAILS_ENV=test</span>
</span></span></code></pre></div><h2 id=appveyoryml-reference>Appveyor.yml Reference</h2><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-yml data-lang=yml><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Notes:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#   - Minimal appveyor.yml file is an empty file. All sections are optional.</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#   - Indent each level of configuration with 2 spaces. Do not use tabs!</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#   - All section names are case-sensitive.</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#   - Section names should be unique on each level.</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#      general configuration      #</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># version format</span>
</span></span><span style=display:flex><span><span style=color:#f92672>version</span>: <span style=color:#ae81ff>1.0</span><span style=color:#ae81ff>.{build}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># you can use {branch} name in version format too</span>
</span></span><span style=display:flex><span><span style=color:#75715e># version: 1.0.{build}-{branch}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># branches to build</span>
</span></span><span style=display:flex><span><span style=color:#f92672>branches</span>:
</span></span><span style=display:flex><span>  <span style=color:#75715e># whitelist</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>only</span>:
</span></span><span style=display:flex><span>    - <span style=color:#ae81ff>master</span>
</span></span><span style=display:flex><span>    - <span style=color:#ae81ff>production</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># blacklist</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>except</span>:
</span></span><span style=display:flex><span>    - <span style=color:#ae81ff>gh-pages</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Do not build on tags (GitHub, Bitbucket, GitLab, Gitea)</span>
</span></span><span style=display:flex><span><span style=color:#f92672>skip_tags</span>: <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Start builds on tags only (GitHub, BitBucket, GitLab, Gitea)</span>
</span></span><span style=display:flex><span><span style=color:#f92672>skip_non_tags</span>: <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Skipping commits with particular message or from specific user</span>
</span></span><span style=display:flex><span><span style=color:#f92672>skip_commits</span>:
</span></span><span style=display:flex><span>  <span style=color:#f92672>message</span>: <span style=color:#ae81ff>/Created.*\.(png|jpg|jpeg|bmp|gif)/     </span> <span style=color:#75715e># Regex for matching commit message</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>author</span>: <span style=color:#ae81ff>John                                     </span> <span style=color:#75715e># Commit author&#39;s username, name, email or regexp maching one of these.</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Including commits with particular message or from specific user</span>
</span></span><span style=display:flex><span><span style=color:#f92672>only_commits</span>:
</span></span><span style=display:flex><span>  <span style=color:#f92672>message</span>: <span style=color:#ae81ff>/build/               </span> <span style=color:#75715e># Start a new build if message contains &#39;build&#39;</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>author</span>: <span style=color:#ae81ff>jack@company.com       </span> <span style=color:#75715e># Start a new build for commit of user with email jack@company.com</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Skipping commits affecting specific files (GitHub only). More details here: /docs/appveyor-yml</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#skip_commits:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  files:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    - docs/*</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    - &#39;**/*.html&#39;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Including commits affecting specific files (GitHub only). More details here: /docs/appveyor-yml</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#only_commits:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  files:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    - Project-A/</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    - Project-B/</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Do not build feature branch with open Pull Requests</span>
</span></span><span style=display:flex><span><span style=color:#f92672>skip_branch_with_pr</span>: <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Maximum number of concurrent jobs for the project</span>
</span></span><span style=display:flex><span><span style=color:#f92672>max_jobs</span>: <span style=color:#ae81ff>1</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    environment configuration    #</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Build worker image (VM template)</span>
</span></span><span style=display:flex><span><span style=color:#f92672>image</span>: <span style=color:#ae81ff>Visual Studio 2015</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># scripts that are called at very beginning, before repo cloning</span>
</span></span><span style=display:flex><span><span style=color:#f92672>init</span>:
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>git config --global core.autocrlf input</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># clone directory</span>
</span></span><span style=display:flex><span><span style=color:#f92672>clone_folder</span>: <span style=color:#ae81ff>c:\projects\myproject</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># fetch repository as zip archive</span>
</span></span><span style=display:flex><span><span style=color:#f92672>shallow_clone</span>: <span style=color:#66d9ef>true</span>                 <span style=color:#75715e># default is &#34;false&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># set clone depth</span>
</span></span><span style=display:flex><span><span style=color:#f92672>clone_depth</span>: <span style=color:#ae81ff>5</span>                      <span style=color:#75715e># clone entire repository history if not defined</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># setting up etc\hosts file</span>
</span></span><span style=display:flex><span><span style=color:#f92672>hosts</span>:
</span></span><span style=display:flex><span>  <span style=color:#f92672>queue-server</span>: <span style=color:#ae81ff>127.0.0.1</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>db.server.com</span>: <span style=color:#ae81ff>127.0.0.2</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># environment variables</span>
</span></span><span style=display:flex><span><span style=color:#f92672>environment</span>:
</span></span><span style=display:flex><span>  <span style=color:#f92672>my_var1</span>: <span style=color:#ae81ff>value1</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>my_var2</span>: <span style=color:#ae81ff>value2</span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># this is how to set encrypted variable. Go to &#34;Settings&#34; -&gt; &#34;Encrypt YAML&#34; page in account menu to encrypt data.</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>my_secure_var1</span>:
</span></span><span style=display:flex><span>    <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>FW3tJ3fMncxvs58/ifSP7w==</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># environment:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  global:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    connection_string: server=12;password=13;</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    service_url: https://127.0.0.1:8090</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  matrix:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  - db: mysql</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    provider: mysql</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  - db: mssql</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    provider: mssql</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    password:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#      secure: $#(JFDA)jQ@#$</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># this is how to allow failing jobs in the matrix</span>
</span></span><span style=display:flex><span><span style=color:#f92672>matrix</span>:
</span></span><span style=display:flex><span>  <span style=color:#f92672>fast_finish</span>: <span style=color:#66d9ef>true</span>     <span style=color:#75715e># set this flag to immediately finish build once one of the jobs fails.</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>allow_failures</span>:
</span></span><span style=display:flex><span>    - <span style=color:#f92672>platform</span>: <span style=color:#ae81ff>x86</span>
</span></span><span style=display:flex><span>      <span style=color:#f92672>configuration</span>: <span style=color:#ae81ff>Debug</span>
</span></span><span style=display:flex><span>    - <span style=color:#f92672>platform</span>: <span style=color:#ae81ff>x64</span>
</span></span><span style=display:flex><span>      <span style=color:#f92672>configuration</span>: <span style=color:#ae81ff>Release</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># exclude configuration from the matrix. Works similarly to &#39;allow_failures&#39; but build not even being started for excluded combination.</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>exclude</span>:
</span></span><span style=display:flex><span>    - <span style=color:#f92672>platform</span>: <span style=color:#ae81ff>x86</span>
</span></span><span style=display:flex><span>      <span style=color:#f92672>configuration</span>: <span style=color:#ae81ff>Debug</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># build cache to preserve files/folders between builds</span>
</span></span><span style=display:flex><span><span style=color:#f92672>cache</span>:
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>packages -&gt; **\packages.config </span> <span style=color:#75715e># preserve &#34;packages&#34; directory in the root of build folder but will reset it if packages.config is modified</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>projectA\libs</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>node_modules                   </span> <span style=color:#75715e># local npm modules</span>
</span></span><span style=display:flex><span>  - <span style=color:#e6db74>&#39;%LocalAppData%\NuGet\Cache&#39;</span>    <span style=color:#75715e># NuGet &lt; v3</span>
</span></span><span style=display:flex><span>  - <span style=color:#e6db74>&#39;%LocalAppData%\NuGet\v3-cache&#39;</span> <span style=color:#75715e># NuGet v3</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># enable service required for build/tests</span>
</span></span><span style=display:flex><span><span style=color:#f92672>services</span>:
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>mssql2014          </span> <span style=color:#75715e># start SQL Server 2014 Express</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>mssql2014rs        </span> <span style=color:#75715e># start SQL Server 2014 Express and Reporting Services</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>mssql2012sp1       </span> <span style=color:#75715e># start SQL Server 2012 SP1 Express</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>mssql2012sp1rs     </span> <span style=color:#75715e># start SQL Server 2012 SP1 Express and Reporting Services</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>mssql2008r2sp2     </span> <span style=color:#75715e># start SQL Server 2008 R2 SP2 Express</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>mssql2008r2sp2rs   </span> <span style=color:#75715e># start SQL Server 2008 R2 SP2 Express and Reporting Services</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>mysql              </span> <span style=color:#75715e># start MySQL 5.6 service</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>postgresql         </span> <span style=color:#75715e># start PostgreSQL 9.5 service</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>iis                </span> <span style=color:#75715e># start IIS</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>msmq               </span> <span style=color:#75715e># start Queuing services</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>mongodb            </span> <span style=color:#75715e># start MongoDB</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># scripts that run after cloning repository</span>
</span></span><span style=display:flex><span><span style=color:#f92672>install</span>:
</span></span><span style=display:flex><span>  <span style=color:#75715e># by default, all script lines are interpreted as batch</span>
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>echo This is batch</span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># to run script as a PowerShell command prepend it with ps:</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>ps</span>: <span style=color:#ae81ff>Write-Host &#39;This is PowerShell&#39;</span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># batch commands start from cmd:</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>cmd</span>: <span style=color:#ae81ff>echo This is batch again</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>cmd</span>: <span style=color:#ae81ff>set MY_VAR=12345</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># enable patching of AssemblyInfo.* files</span>
</span></span><span style=display:flex><span><span style=color:#f92672>assembly_info</span>:
</span></span><span style=display:flex><span>  <span style=color:#f92672>patch</span>: <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>file</span>: <span style=color:#ae81ff>AssemblyInfo.*</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>assembly_version</span>: <span style=color:#e6db74>&#34;2.2.{build}&#34;</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>assembly_file_version</span>: <span style=color:#e6db74>&#34;{version}&#34;</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>assembly_informational_version</span>: <span style=color:#e6db74>&#34;{version}&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Automatically register private account and/or project AppVeyor NuGet feeds.</span>
</span></span><span style=display:flex><span><span style=color:#f92672>nuget</span>:
</span></span><span style=display:flex><span>  <span style=color:#f92672>account_feed</span>: <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>project_feed</span>: <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>disable_publish_on_pr</span>: <span style=color:#66d9ef>true</span>     <span style=color:#75715e># disable publishing of .nupkg artifacts to account/project feeds for pull request builds</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>publish_wap_octopus</span>: <span style=color:#66d9ef>true</span>       <span style=color:#75715e># disable publishing of Octopus Deploy .nupkg artifacts to account/project feeds</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#       build configuration       #</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># build platform, i.e. x86, x64, Any CPU. This setting is optional.</span>
</span></span><span style=display:flex><span><span style=color:#f92672>platform</span>: <span style=color:#ae81ff>Any CPU</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># to add several platforms to build matrix:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#platform:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  - x86</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  - Any CPU</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># build Configuration, i.e. Debug, Release, etc.</span>
</span></span><span style=display:flex><span><span style=color:#f92672>configuration</span>: <span style=color:#ae81ff>Release</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># to add several configurations to build matrix:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#configuration:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  - Debug</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  - Release</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Build settings, not to be confused with &#34;before_build&#34; and &#34;after_build&#34;.</span>
</span></span><span style=display:flex><span><span style=color:#75715e># &#34;project&#34; is relative to the original build directory and not influenced by directory changes in &#34;before_build&#34;.</span>
</span></span><span style=display:flex><span><span style=color:#f92672>build</span>:
</span></span><span style=display:flex><span>  <span style=color:#f92672>parallel</span>: <span style=color:#66d9ef>true</span>                  <span style=color:#75715e># enable MSBuild parallel builds</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>project</span>: <span style=color:#ae81ff>MyTestAzureCS.sln     </span> <span style=color:#75715e># path to Visual Studio solution or project</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>publish_wap</span>: <span style=color:#66d9ef>true</span>               <span style=color:#75715e># package Web Application Projects (WAP) for Web Deploy</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>publish_wap_xcopy</span>: <span style=color:#66d9ef>true</span>         <span style=color:#75715e># package Web Application Projects (WAP) for XCopy deployment</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>publish_wap_beanstalk</span>: <span style=color:#66d9ef>true</span>     <span style=color:#75715e># Package Web Applications for AWS Elastic Beanstalk deployment</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>publish_wap_octopus</span>: <span style=color:#66d9ef>true</span>       <span style=color:#75715e># Package Web Applications for Octopus deployment</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>publish_azure_webjob</span>: <span style=color:#66d9ef>true</span>      <span style=color:#75715e># Package Azure WebJobs for Zip Push deployment</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>publish_azure</span>: <span style=color:#66d9ef>true</span>             <span style=color:#75715e># package Azure Cloud Service projects and push to artifacts</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>publish_aspnet_core</span>: <span style=color:#66d9ef>true</span>       <span style=color:#75715e># Package ASP.NET Core projects</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>publish_core_console</span>: <span style=color:#66d9ef>true</span>      <span style=color:#75715e># Package .NET Core console projects</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>publish_nuget</span>: <span style=color:#66d9ef>true</span>             <span style=color:#75715e># package projects with .nuspec files and push to artifacts</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>publish_nuget_symbols</span>: <span style=color:#66d9ef>true</span>     <span style=color:#75715e># generate and publish NuGet symbol packages</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>include_nuget_references</span>: <span style=color:#66d9ef>true</span>  <span style=color:#75715e># add -IncludeReferencedProjects option while packaging NuGet artifacts</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># MSBuild verbosity level</span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>verbosity</span>: <span style=color:#ae81ff>quiet|minimal|normal|detailed</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># scripts to run before build</span>
</span></span><span style=display:flex><span><span style=color:#f92672>before_build</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># to run your custom scripts instead of automatic MSBuild</span>
</span></span><span style=display:flex><span><span style=color:#f92672>build_script</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># scripts to run after build (working directory and environment changes are persisted from the previous steps)</span>
</span></span><span style=display:flex><span><span style=color:#f92672>after_build</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># scripts to run *after* solution is built and *before* automatic packaging occurs (web apps, NuGet packages, Azure Cloud Services)</span>
</span></span><span style=display:flex><span><span style=color:#f92672>before_package</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># to disable automatic builds</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#build: off</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#       tests configuration       #</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># to run tests against only selected assemblies and/or categories</span>
</span></span><span style=display:flex><span><span style=color:#f92672>test</span>:
</span></span><span style=display:flex><span>  <span style=color:#f92672>assemblies</span>:
</span></span><span style=display:flex><span>    <span style=color:#f92672>only</span>:
</span></span><span style=display:flex><span>      - <span style=color:#ae81ff>asm1.dll</span>
</span></span><span style=display:flex><span>      - <span style=color:#ae81ff>asm2.dll</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#f92672>categories</span>:
</span></span><span style=display:flex><span>    <span style=color:#f92672>only</span>:
</span></span><span style=display:flex><span>      - <span style=color:#ae81ff>UI</span>
</span></span><span style=display:flex><span>      - <span style=color:#ae81ff>E2E</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># to run tests against all except selected assemblies and/or categories</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#test:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  assemblies:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    except:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#      - asm1.dll</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#      - asm2.dll</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  categories:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    except:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#      - UI</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#      - E2E</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># to run tests from different categories as separate jobs in parallel</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#test:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#  categories:</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    - A            # A category common for all jobs</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    - [UI]         # 1st job</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#    - [DAL, BL]    # 2nd job</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># scripts to run before tests (working directory and environment changes are persisted from the previous steps such as &#34;before_build&#34;)</span>
</span></span><span style=display:flex><span><span style=color:#f92672>before_test</span>:
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>echo script1</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>ps</span>: <span style=color:#ae81ff>Write-Host &#34;script1&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># to run your custom scripts instead of automatic tests</span>
</span></span><span style=display:flex><span><span style=color:#f92672>test_script</span>:
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>echo This is my custom test script</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># scripts to run after tests</span>
</span></span><span style=display:flex><span><span style=color:#f92672>after_test</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># to disable automatic tests</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#test: off</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#      artifacts configuration    #</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#f92672>artifacts</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># pushing a single file</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>path</span>: <span style=color:#ae81ff>test.zip</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># pushing a single file with environment variable in path and &#34;Deployment name&#34; specified</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>path</span>: <span style=color:#ae81ff>MyProject\bin\$(configuration)</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>name</span>: <span style=color:#ae81ff>myapp</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># pushing entire folder as a zip archive</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>path</span>: <span style=color:#ae81ff>logs</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># pushing all *.nupkg files in build directory recursively</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>path</span>: <span style=color:#e6db74>&#39;**\*.nupkg&#39;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#     deployment configuration    #</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># providers: Local, FTP, WebDeploy, AzureCS, AzureBlob, S3, NuGet, Environment</span>
</span></span><span style=display:flex><span><span style=color:#75715e># provider names are case-sensitive!</span>
</span></span><span style=display:flex><span><span style=color:#f92672>deploy</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#75715e># FTP deployment provider settings</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>FTP</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>protocol</span>: <span style=color:#ae81ff>ftp|ftps|sftp</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>host</span>: <span style=color:#ae81ff>ftp.myserver.com</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>username</span>: <span style=color:#ae81ff>admin</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>password</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>eYKZKFkkEvFYWX6NfjZIVw==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>folder</span>:
</span></span><span style=display:flex><span>    <span style=color:#f92672>application</span>:
</span></span><span style=display:flex><span>    <span style=color:#f92672>active_mode</span>: <span style=color:#66d9ef>false</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>beta</span>: <span style=color:#66d9ef>true</span>      <span style=color:#75715e># enable alternative FTP library for &#39;ftp&#39; and &#39;ftps&#39; modes</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>debug</span>: <span style=color:#66d9ef>true</span>     <span style=color:#75715e># show complete FTP log</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#75715e># Amazon S3 deployment provider settings</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>S3</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>access_key_id</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>ABcd==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>secret_access_key</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>ABcd==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>bucket</span>: <span style=color:#ae81ff>my_bucket</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>folder</span>:
</span></span><span style=display:flex><span>    <span style=color:#f92672>artifact</span>:
</span></span><span style=display:flex><span>    <span style=color:#f92672>set_public</span>: <span style=color:#66d9ef>false</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#75715e># Azure Blob storage deployment provider settings</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>AzureBlob</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>storage_account_name</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>ABcd==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>storage_access_key</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>ABcd==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>container</span>: <span style=color:#ae81ff>my_container</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>folder</span>:
</span></span><span style=display:flex><span>    <span style=color:#f92672>artifact</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#75715e># Web Deploy deployment provider settings</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>WebDeploy</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>server</span>: <span style=color:#ae81ff>http://www.deploy.com/myendpoint</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>website</span>: <span style=color:#ae81ff>mywebsite</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>username</span>: <span style=color:#ae81ff>user</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>password</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>eYKZKFkkEvFYWX6NfjZIVw==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>ntlm</span>: <span style=color:#66d9ef>false</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>remove_files</span>: <span style=color:#66d9ef>false</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>app_offline</span>: <span style=color:#66d9ef>false</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>do_not_use_checksum</span>: <span style=color:#66d9ef>true</span>           <span style=color:#75715e># do not use check sum for comparing source and destination files. By default checksums are used.</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>sync_retry_attempts</span>: <span style=color:#ae81ff>2</span>              <span style=color:#75715e># sync attempts, max</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>sync_retry_interval</span>: <span style=color:#ae81ff>2000</span>           <span style=color:#75715e># timeout between sync attempts, milliseconds</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>aspnet_core</span>: <span style=color:#66d9ef>true</span>                   <span style=color:#75715e># artifact zip contains ASP.NET Core application</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>aspnet_core_force_restart</span>: <span style=color:#66d9ef>true</span>     <span style=color:#75715e># poke app&#39;s web.config before deploy to force application restart</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>skip_dirs</span>: <span style=color:#ae81ff>\\App_Data</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>skip_files</span>: <span style=color:#ae81ff>web.config</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>on</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>branch</span>: <span style=color:#ae81ff>release</span>
</span></span><span style=display:flex><span>      <span style=color:#f92672>platform</span>: <span style=color:#ae81ff>x86</span>
</span></span><span style=display:flex><span>      <span style=color:#f92672>configuration</span>: <span style=color:#ae81ff>debug</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#75715e># Deploying to Azure Cloud Service</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>AzureCS</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>subscription_id</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>fjZIVw==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>subscription_certificate</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>eYKZKFkkEv...FYWX6NfjZIVw==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>storage_account_name</span>: <span style=color:#ae81ff>my_storage</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>storage_access_key</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>ABcd==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>service</span>: <span style=color:#ae81ff>my_service</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>slot</span>: <span style=color:#ae81ff>Production</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>target_profile</span>: <span style=color:#ae81ff>Cloud</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>artifact</span>: <span style=color:#ae81ff>MyPackage.cspkg</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#75715e># Deploying to NuGet feed</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>NuGet</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>server</span>: <span style=color:#ae81ff>https://my.nuget.server/feed</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>api_key</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>FYWX6NfjZIVw==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>skip_symbols</span>: <span style=color:#66d9ef>false</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>symbol_server</span>: <span style=color:#ae81ff>https://your.symbol.server/feed</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>artifact</span>: <span style=color:#ae81ff>MyPackage.nupkg</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#75715e># Deploy to GitHub Releases</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>GitHub</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>artifact</span>: <span style=color:#ae81ff>/.*\.nupkg/          </span> <span style=color:#75715e># upload all NuGet packages to release assets</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>draft</span>: <span style=color:#66d9ef>false</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>prerelease</span>: <span style=color:#66d9ef>false</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>on</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>branch</span>: <span style=color:#ae81ff>master               </span> <span style=color:#75715e># release from master branch only</span>
</span></span><span style=display:flex><span>      <span style=color:#f92672>APPVEYOR_REPO_TAG</span>: <span style=color:#66d9ef>true</span>       <span style=color:#75715e># deploy on tag push only</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#75715e># Deploying to a named environment</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>Environment</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>name</span>: <span style=color:#ae81ff>staging</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>on</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>branch</span>: <span style=color:#ae81ff>staging</span>
</span></span><span style=display:flex><span>      <span style=color:#f92672>env_var1</span>: <span style=color:#ae81ff>value1</span>
</span></span><span style=display:flex><span>      <span style=color:#f92672>env_var2</span>: <span style=color:#ae81ff>value2</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># scripts to run before deployment</span>
</span></span><span style=display:flex><span><span style=color:#f92672>before_deploy</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># scripts to run after deployment</span>
</span></span><span style=display:flex><span><span style=color:#f92672>after_deploy</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># to run your custom scripts instead of provider deployments</span>
</span></span><span style=display:flex><span><span style=color:#f92672>deploy_script</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># to disable deployment</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#deploy: off</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#        global handlers          #</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># on successful build</span>
</span></span><span style=display:flex><span><span style=color:#f92672>on_success</span>:
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>do something</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># on build failure</span>
</span></span><span style=display:flex><span><span style=color:#f92672>on_failure</span>:
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>do something</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># after build failure or success</span>
</span></span><span style=display:flex><span><span style=color:#f92672>on_finish</span>:
</span></span><span style=display:flex><span>  - <span style=color:#ae81ff>do something</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#         notifications           #</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#---------------------------------#</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#f92672>notifications</span>:
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># Email</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>Email</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>to</span>:
</span></span><span style=display:flex><span>      - <span style=color:#ae81ff>user1@email.com</span>
</span></span><span style=display:flex><span>      - <span style=color:#ae81ff>user2@email.com</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>subject</span>: <span style=color:#e6db74>&#39;Build {{status}}&#39;</span>                  <span style=color:#75715e># optional</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>message</span>: <span style=color:#e6db74>&#34;{{message}}, {{commitId}}, ...&#34;</span>    <span style=color:#75715e># optional</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>on_build_status_changed</span>: <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># HipChat</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>HipChat</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>auth_token</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>RbOnSMSFKYzxzFRrxM1+XA==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>room</span>: <span style=color:#ae81ff>ProjectA</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>template</span>: <span style=color:#e6db74>&#34;{message}, {commitId}, ...&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># Slack</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>Slack</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>incoming_webhook</span>: <span style=color:#ae81ff>http://incoming-webhook-url</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># ...or using auth token</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>Slack</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>auth_token</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>kBl9BlxvRMr9liHmnBs14A==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>channel</span>: <span style=color:#ae81ff>development</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>template</span>: <span style=color:#e6db74>&#34;{message}, {commitId}, ...&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># Campfire</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>Campfire</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>account</span>: <span style=color:#ae81ff>appveyor</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>auth_token</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>RifLRG8Vfyol+sNhj9u2JA==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>room</span>: <span style=color:#ae81ff>ProjectA</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>template</span>: <span style=color:#e6db74>&#34;{message}, {commitId}, ...&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>  <span style=color:#75715e># Webhook</span>
</span></span><span style=display:flex><span>  - <span style=color:#f92672>provider</span>: <span style=color:#ae81ff>Webhook</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>url</span>: <span style=color:#ae81ff>http://www.myhook2.com</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>headers</span>:
</span></span><span style=display:flex><span>      <span style=color:#f92672>User-Agent</span>: <span style=color:#ae81ff>myapp 1.0</span>
</span></span><span style=display:flex><span>      <span style=color:#f92672>Authorization</span>:
</span></span><span style=display:flex><span>        <span style=color:#f92672>secure</span>: <span style=color:#ae81ff>GhD+5xhLz/tkYY6AO3fcfQ==</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>on_build_success</span>: <span style=color:#66d9ef>false</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>on_build_failure</span>: <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span>    <span style=color:#f92672>on_build_status_changed</span>: <span style=color:#66d9ef>true</span>
</span></span></code></pre></div></section><footer class=article-footer>
<section class=article-tags>
<a href=/tags/cicd/>CICD</a>
</section><section class=article-lastmod><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg>
<span>
Last updated on Sep 24, 2020 18:06 CST
</span>
</section></footer></article><aside class=related-contents--wrapper>
<h2 class=section-title>Related contents</h2><div class=related-contents>
<div class="flex article-list--tile">
<article>
<a href=/blog/azure_pipelines/>
<div class=article-details>
<h2 class=article-title>Azure Pipelines</h2></div></a>
</article></div></div></aside><div id=gitalk-container></div><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.css>
<script src=https://cdn.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.min.js></script>
<script src=https://cdn.jsdelivr.net/npm/blueimp-md5@2.18.0/js/md5.min.js></script>
<script>const gitalk=new Gitalk({clientID:"97eb9ce8ac126f0c7833",clientSecret:"5da440441b500b0b016928640712a1b1a03a5f8f",repo:"sdttttt/sdttttt.github.io",owner:"sdttttt",admin:["sdttttt"],distractionFreeMode:!1,id:md5(location.pathname)});(function(){if(["localhost","127.0.0.1"].indexOf(window.location.hostname)!=-1){document.getElementById("gitalk-container").innerHTML="Gitalk comments not available by default when the website is previewed locally.";return}gitalk.render("gitalk-container")})()</script>
<footer class=site-footer>
<section class=copyright>
&copy;
2022 SDTTTTT
</section><section class=powerby>
Built with <a href=https://gohugo.io/ target=_blank rel=noopener>Hugo</a> <br>
Theme <b><a href=https://github.com/CaiJimmy/hugo-theme-stack target=_blank rel=noopener data-version=3.10.0>Stack</a></b> designed by <a href=https://jimmycai.com target=_blank rel=noopener>Jimmy</a>
</section></footer><div class=pswp tabindex=-1 role=dialog aria-hidden=true>
<div class=pswp__bg></div><div class=pswp__scroll-wrap>
<div class=pswp__container>
<div class=pswp__item></div><div class=pswp__item></div><div class=pswp__item></div></div><div class="pswp__ui pswp__ui--hidden">
<div class=pswp__top-bar>
<div class=pswp__counter></div><button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
<button class="pswp__button pswp__button--share" title=Share></button>
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
<div class=pswp__preloader>
<div class=pswp__preloader__icn>
<div class=pswp__preloader__cut>
<div class=pswp__preloader__donut></div></div></div></div></div><div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
<div class=pswp__share-tooltip></div></div><button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
</button>
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
</button>
<div class=pswp__caption>
<div class=pswp__caption__center></div></div></div></div></div><script src=https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.js integrity="sha256-ePwmChbbvXbsO02lbM3HoHbSHTHFAeChekF1xKJdleo=" crossorigin=anonymous defer></script><script src=https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe-ui-default.min.js integrity="sha256-UKkzOn/w1mBxRmLLGrSeyB4e1xbrp4xylgAWb3M42pU=" crossorigin=anonymous defer></script><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/default-skin/default-skin.css integrity="sha256-c0uckgykQ9v5k+IqViZOZKc47Jn7KQil4/MP3ySA3F8=" crossorigin=anonymous><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.css integrity="sha256-SBLU4vv6CA6lHsZ1XyTdhyjJxCjPif/TRkjnsyGAGnE=" crossorigin=anonymous>
</main></div><script src=https://cdn.jsdelivr.net/npm/node-vibrant@3.1.5/dist/vibrant.min.js integrity="sha256-5NovOZc4iwiAWTYIFiIM7DxKUXKWvpVEuMEPLzcm5/g=" crossorigin=anonymous></script><script type=text/javascript src=/ts/main.js defer></script>
<script>(function(){const e=document.createElement("link");e.href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700&display=swap",e.type="text/css",e.rel="stylesheet",document.head.appendChild(e)})()</script>
</body></html>